package com.sky.weixin.contacts.util;

import com.sky.weixin.ParamesAPI.util.ParamesAPI;
import com.sky.weixin.ParamesAPI.util.WeixinUtil;

/**
 * 通讯录成员管理类
 * @author skygao
 * @date 2014.10.10*/
public class MPerson {
	//创建成员地址
	public static String CREATE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN";
	//更新成员地址
	public static String UPDATA_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN";
	//删滁成员地址
	public static String DELETE_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=ID";
	//获取成员地址
	public static String GET_PERSON_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=ID";
	//获取部门成员地址
	public static String GET_GROUP_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN&department_id=ID&fetch_child=0&status=0";
	
	/**
	 * 创建成员
	 * @param userid 员工UserID。对应管理端的帐号，企业内必须唯一。长度为1~64个字符
	 * @param name 成员名称。长度为1~64个字符
	 * @param department 成员所属部门id列表 格式： "department": [x, y]
	 * @param position 职位信息
	 * @param mobile 手机号码。企业内必须唯一，mobile/weixinid/email三者不能同时为空
	 * @param gender 性别。gender=0表示男，=1表示女。默认gender=0
	 * @param tel 办公电话。长度为0~64个字符
	 * @param email 邮箱。长度为0~64个字符。企业内必须唯一
	 * @param weixinid 微信号。企业内必须唯一
	 * */
	public static String Create(String  userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid){
		String PostData = "{\"userid\": \"%s\",\"name\": \"%s\",\"department\": [1, 2],\"position\": \"%s\",\"mobile\": \"%s\",\"gender\": \"%s\",\"tel\": \"%s\",\"email\": \"%s\",\"weixinid\": \"%s\"}";
		return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid);
	}
	
	/**
	 * 更新成员
	 * @param userid 员工UserID。对应管理端的帐号，企业内必须唯一。长度为1~64个字符
	 * @param name 成员名称。长度为1~64个字符
	 * @param department 成员所属部门id列表 格式： "department": [x]
	 * @param position 职位信息
	 * @param mobile 手机号码。企业内必须唯一，mobile/weixinid/email三者不能同时为空
	 * @param gender 性别。gender=0表示男，=1表示女。默认gender=0
	 * @param tel 办公电话。长度为0~64个字符
	 * @param email 邮箱。长度为0~64个字符。企业内必须唯一
	 * @param weixinid 微信号。企业内必须唯一
	 * @param enable 启用/禁用成员。1表示启用成员，0表示禁用成员
	 * */
	public static String Updata(String  userid,String name ,String position ,String mobile ,String gender,String tel ,String email,String weixinid,String enable){
		String PostData = "{\"userid\": %s,\"name\": %s,\"department\": [1],\"position\": %s,\"mobile\": %s,\"gender\": %s,\"tel\": %s,\"email\": %s,\"weixinid\": %s,\"enable\": %s}";
		return String.format(PostData, userid,name,position,mobile,gender,tel,email,weixinid,enable);
	}
	
	/**
	 * 删除成员
	 * @param userid 员工UserID。对应管理端的帐号
	 * */
	public static String Delete(String userid){
		String delete_url = DELETE_URL.replace("ID", userid);
		return delete_url;
	}
	/**
	 * 获取成员
	 * @param userid 员工UserID。对应管理端的帐号
	 * */
	public static String GPerson(String userid){
		String getperson_url = GET_PERSON_URL.replace("ID", userid);
		return getperson_url;
	}
	/**
	 * 获取部门成员
	 * @param department_id 获取的部门id
	 * @param fetch_child 1/0：是否递归获取子部门下面的成员 （可选）
	 * @param status 0获取全部员工，1获取已关注成员列表，2获取禁用成员列表，4获取未关注成员列表。status可叠加 （可选）
	 * */
	public static String GGroup(String department_id){
		String getgroup_url = GET_GROUP_URL.replace("ID", department_id);
		return getgroup_url;
	}
	//示例
	public static void main(String[] args) {
		/**
		 * 创建成员示例
		 * */
		// 调取凭证
		String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken();
		// 拼装数据
		String PostData = Create("skygao1", "Engineer-JSP", "架构师", "15055548524", "0", "0731-8033489", "jspping@qq.com", "oY26336o3");
		// 提交数据，获取结果
		String result = WeixinUtil.PostMessage(access_token, "POST", CREATE_URL, PostData);
		// 打印结果
		if(null==result){
			System.out.println("操作成功");
		}
		else {
			System.out.println("操作失败");
		}
//		getUser();

	}
	public static void getUser(){

		// 调取凭证
		String access_token = WeixinUtil.getAccessToken(ParamesAPI.corpId, ParamesAPI.secret).getToken();
		String PostData = GPerson("gao");
		// 提交数据，获取结果
		String result = WeixinUtil.PostMessage(access_token, "GET", GET_PERSON_URL, PostData);
		// 打印结果
		if(null==result){
			System.out.println("操作成功");
		}
		else {
			System.out.println("操作失败");
		}
	}
}
